专利摘要:
A storage device may include a controller and a memory array comprising a plurality of dice arranged in a plurality of channels. In some examples, the controller may be configured to define, from the memory array, a plurality of dice sets based on respective circuit authorization lines associated with the plurality of dice, wherein each dice set of the plurality of dice games comprises at least one die of each of the plurality of channels; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected dice set; receive a data unit to store; and transmitting commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks
公开号:FR3026545A1
申请号:FR1559006
申请日:2015-09-24
公开日:2016-04-01
发明作者:George G Artnak Jr;Haining Liu;Yuriy Pavlenko
申请人:HGST Netherlands BV;
IPC主号:
专利说明:

[0001] TECHNICAL FIELD [1] The present invention relates to logical storage management, and more particularly to logical storage management for integrated circuit disks. BACKGROUND [2] Memory devices may include semiconductor internal integrated circuits in computers or other electronic devices. There are many different types of memory, including random access memory (RAM), read-only memory (ROM), dynamic random access memory (DRAM), static RAM (SRAM), and synchronous dynamic RAM (SDRAM). The memory may be a non-volatile memory or a volatile memory. [3] The main difference between nonvolatile memory and volatile memory is that nonvolatile memory can continue to store data without the need for a permanent power supply. As a result, non-volatile memory devices have become a popular type of memory for a large number of electronic applications. One type of nonvolatile memory includes flash memory. Flash memory devices typically use a single-transistor memory cell that provides high memory densities, high reliability, and low power consumption. Common uses of flash memory include personal computers, personal digital assistants (PDAs), digital cameras, and cell phones. Program code and system data such as basic input / output (BIOS) system may be stored in flash memory devices for personal use in personal computer systems. [4] Nonvolatile memory devices, including flash memory devices, are also integrated in solid state storage devices, such as integrated circuit (SSD) disks. SUMMARY [5] In one example, a storage device may include a memory array comprising a plurality of dice arranged in a plurality of channels and a controller. In some examples, the controller may be configured to define, from the memory array, a plurality of dice sets based on respective circuit authorization lines associated with the plurality of dice, wherein each dice set of the plurality of dice games comprises at least one die of each of the plurality of channels; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected dice set; receive a data unit to store; and transmitting commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks. [6] In another example, a method includes defining, from a memory array comprising a plurality of dice arranged in a plurality of channels, a plurality of dice sets on the respective circuit authorization line associated with a plurality of channels. the plurality of dice, wherein each dice game of the plurality of dice games comprises at least one die of each of the plurality of channels, and defining, from a selected dice game of the plurality of dice games a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected set of dice. In this example, the method also comprises receiving, by a controller of the memory array, a data unit to be stored; and transmitting, by the controller, commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks. [7] In another example, a computer readable storage medium stores instructions which, when executed, cause one or more processors of a storage device to: define, from a memory array comprising a plurality of dice arranged in a plurality of channels, a plurality of dice sets based on respective circuit authorization lines associated with the plurality of dice, wherein each dice game of the plurality of dice games comprises at least a die of each of the plurality of channels; and defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected set of dice. In this example, the computer readable storage medium also stores instructions which, when executed, cause one or more processors of the storage device to receive a data unit to be stored; and transmit commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks. [8] In another example, a system includes means for defining, from a memory array comprising a plurality of dice arranged in a plurality of channels, a plurality of dice sets on the basis of authorization lines of respective circuit associated with the plurality of dice, wherein each dice set of the plurality of dice games comprises at least one die of each of the plurality of channels; and means for defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each dice of the selected dice set. In this example, the system also comprises means for receiving a data unit to be stored; and means for transmitting commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks. [9] The details of one or more examples are presented in the accompanying drawings and the description below. Other features, objects and advantages will become apparent upon reading the description and drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a conceptual and schematic block diagram illustrating an exemplary storage environment in which a storage device may function as a storage device for a host device, in accordance with one or more techniques of the present invention. [11] Fig. 2 is a conceptual block diagram illustrating an example of a memory device which comprises a plurality of blocks, each block comprising a plurality of pages, according to one or more techniques of the present invention. [12] Fig. 3 is a conceptual and schematic block diagram illustrating an exemplary controller, in accordance with one or more techniques of the present invention. [13] Fig. 4 is a conceptual block diagram illustrating an example of a non-volatile memory array that includes a plurality of memory devices arranged in a plurality of channels, in accordance with one or more techniques of the present invention. [14] Fig. 5 is a conceptual block diagram illustrating an example of a technique that can be implemented by a controller of a storage device to define sets of 3 blocks from a set of dice, in accordance with a or several techniques of the present invention. [15] Fig. 6 is a conceptual block diagram illustrating another example of a technique that can be implemented by a controller of a storage device to define sets of blocks from a set of dice, in accordance with a or several techniques of the present invention. [16] Fig. 7 is a flowchart illustrating an exemplary technique of managing a storage device using sets of blocks, according to one or more techniques of the present invention.
[0002] DETAILED DESCRIPTION [17] To improve throughput by using parallelism, an SSD can implement a background management system by combining multiple physical flash blocks located on different channels and circuit authorization lines (CE). ) to form logical containers.  The SSD can then use these logical containers as a basic operational unit for a logical management domain.  [18] In some examples, the controller may construct the logical container by selecting a respective physical flash block from each target (e.g., an EC line) for each physical channel.  In doing so, the controller can fill all the flash blocks in the logical container at the same time and the system can reach the full potential in the I / O rate.  For example, for a controller with 16 physical channels and 8 CE, a logical container size can be 128 physical blocks (16 times 8 CE).  However, in some instances, it may not be desirable to select a block from each of the memory devices.  [19] In general, the present invention describes techniques for using a two-level partitioning system for managing a storage device.  In some examples, a controller of a storage device may define the first tier by partitioning an array of memory devices into a plurality of dice sets which may each include at least one memory device of each channel of the array.  The controller may define the second level by defining a plurality of sets of blocks from each of the plurality of dice sets such that each set of blocks of the plurality of sets of blocks comprises at least one block of each set of devices. respective memory in the game of dice.  The controller can then use the sets of blocks as base units of a logical management domain.  For example, a controller that has 8 CE and 16 channels can implement the techniques of the present invention by partitioning all memory devices into 8 dice sets, each dice set containing a respective memory device of each channel.  In this example, the block sets can each have 16 physical flash blocks, one block from each of the 16 channels.  In this way, the controller can reduce the number of blocks included in the base units of the logical management domain, for example, without compromising the potential throughput.  [20] In addition, the present invention relates to techniques for dynamically programming the number of active memory devices based on different energy consumption budgets, performance objectives, or both.  For example, the controller can determine, in run time, a quantity of memory devices that can be active simultaneously to meet, for example, a power consumption budget or a performance target.  On the basis of the determined amount, the controller may program to write, read, or both simultaneously in one or more dice games (any number of dice games between one and the number of dice sets of the dice device). storage).  Increasing the number of active idle sets can increase the I / O performance of the storage device while increasing the energy consumed by the storage device.  Conversely, decreasing the number of active asset sets simultaneously can decrease the I / O performance of the storage device while decreasing the energy consumed by the storage device.  In this way, the controller can dynamically program the number of active memory devices to conform to different energy consumption budgets, performance goals, or both.  [21] Fig. 1 is a conceptual and schematic block diagram illustrating an exemplary storage environment 2 in which a storage device 6 can function as a storage device for a host device 4, in accordance with one or more of the techniques of the present invention. invention.  For example, the host device 4 may use nonvolatile memory devices included in the storage device 6 to store and retrieve data.  In some examples, the storage environment 2 may include a plurality of storage devices, such as the storage device 6, that can operate as a storage array.  For example, the storage environment 2 may include a plurality of storage devices 6 configured as a redundant array of inexpensive / independent disks (RAID) that function collectively as a mass storage device for the host device 4.  [22] The storage environment 2 may include a host device 4 that can store and / or retrieve data in one or more storage devices, such as the storage device 6.  As illustrated in FIG. 1, the host device 4 can communicate with the storage device 6 via an interface 14.  The host device 4 may comprise any of a wide variety of devices, including computer servers, networked storage units (NAS), desktops, notebooks (for example, a laptop ), tablet computers, set-top boxes, handsets such as so-called "smart phones", "smart" tablets, televisions, cameras, display devices, digital media players, game consoles video, video streaming devices, and others.  [23] As illustrated in FIG. 1, the storage device 6 may comprise a controller 8, a non-volatile memory array 10 (NVMA 10), a cache memory 12, and an interface 14.  In some examples, the storage device 6 may comprise additional components not shown in Figure 1 for clarity.  For example, the storage device 6 may comprise energy distribution components, including, for example, a capacitor, a supercapacitor, or a battery; a printed circuit board (PB) to which the components of the storage device 6 are mechanically connected and which comprises electrically conductive traces which electrically connect the components of the storage device 6; and the like.  In some examples, the physical dimensions and connection configurations of the storage device 6 may be in accordance with one or more standard form factors.  Some examples of standard form factors include, but are not limited to, a 3.5 "hard disk (HDD), a 2.5" HDD, a 1.8 "HDD, Peripheral Component Interconnect (PCI) , PCI-Extended (PCI-X), PCI Express (PCIe) (for example, PCIe x1, x4, x8, x16, Mini PCIe card, MiniPCI, etc. ).  In some examples, the storage device 6 may be directly coupled (for example, directly soldered) to a motherboard of the host device 4.  6 [24] The storage device 6 may comprise interface 14 to interface with the host device 4.  The interface 14 may comprise a data bus for exchanging data with the host device 4 and / or a control bus for exchanging commands with the host device 4.  The interface 14 may operate in accordance with any suitable protocol.  For example, the interface 14 may operate in accordance with one or more of the following protocols: advanced connection technology (ATA) (for example, Serial ATA (SATA), and parallel ATA (PATA)), fiber optic channel, interface Small Computer System (SCSI), Serial Connection SCSI (SAS), Peripheral Component Interconnect (PCI), and PCI-Express.  The electrical connection of the interface 14 (e.g., the data bus, the control bus, or both) is electrically connected to the controller 8, providing the electrical connection between the host device 4 and the controller 8, allowing the data exchange between the host device 4 and the controller 8.  In some examples, the electrical connection of the interface 14 may also allow the storage device 6 to receive power from the host device 4.  [25] The storage device 6 may include an NVMA 10 which may include a plurality of memory devices 16Aa-16Nn (collectively, "memory devices 16") each of which may be configured to store and / or retrieve data.  For example, a memory device memory device 16 may receive data and a message from the controller 8 that instructs the memory device to store the data.  Similarly, the memory device of the memory devices 16 may receive a message from the controller 8 which instructs the memory device to retrieve data.  In some examples, each of the memory devices 6 may be called dice.  In some examples, a single physical chip may have a plurality of dice (e.g., a plurality of memory devices 16).  In some examples, each of the memory devices 16 may be configured to store relatively large amounts of data (e.g., 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB). GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB, etc. ).  [26] In some examples, memory devices 16 may include flash memory devices.  The flash memory devices may include NAND or NAND flash memory devices, and may store data based on a charge contained in a floating gate of a transistor for each flash memory cell.  In NAND flash memory devices, the flash memory device can be divided into a plurality of blocks.  FIG. 2 is a conceptual block diagram illustrating an example of a memory device 16Aa that includes a plurality of blocks 17A-17N (collectively, the "blocks 17"), each block comprising a plurality of pages 19Aa-19Nm (collectively , "pages 19").  Each block of the blocks 17 may comprise a plurality of NAND cells.  Rows of NAND cells can be electrically connected in series using a word channel to define a page (a page of pages 19).  Respective cells in each of a plurality of pages 19 may be electrically connected to respective bit channels.  Controller 6 can write and read data in page-level NAND flash memory devices and erase data from block-level NAND flash memory devices.  [27] In some instances, it may not be practical for the controller 8 to be separately connected to each memory device 16 of the memory devices 16.  As such, the connections between the memory devices 16 and the controller 8 can be multiplexed.  By way of example, memory devices 16 may be grouped into channels 18A-18N (collectively, "channels 18").  For example, as illustrated in FIG. 1, the memory devices 16Aa-16Nn can be grouped into a first channel 18A, and the memory devices 16Na-16Nn can be grouped into a Nth channel 18N.  The memory devices 16 grouped in each of the channels 18 can share one or more connections to the controller 8.  For example, the memory devices 16 grouped into the first channel 18A can be attached to a common I / O bus and a common control bus.  The storage device 6 may comprise a common I / O bus and a common control bus for each respective channel 18.  In some examples, each channel of the channels 18 may comprise a set of circuit authorization lines (CEs) that may be used to multiplex the memory devices on each channel.  For example, each EC line can be connected to a respective memory device of the memory devices 18.  In this way, the number of separate connections between the controller 8 and the memory devices 18 can be reduced.  In addition, since each channel has an independent set of connections to the controller 8, the reduction in connections may not significantly affect the data rate since the controller 8 may simultaneously transmit different commands to each channel.  [28] In some examples, the storage device 6 may include a number of memory devices 16 selected to provide a total capacity that is greater than the capacity accessible to the host device 4.  This is called over-supply.  For example, if the storage device 6 is advertised as having 240 GB of user accessible storage capacity, the storage device 6 may have sufficient memory devices 16 to provide a total storage capacity of 256 GB.  The 16 GB of storage devices 16 may not be accessible to the host device 4 or to a user of the host device 4.  Rather, the additional storage devices 16 may provide additional blocks 17 to facilitate writing, space reclamation, wear distribution, and the like.  In addition, the additional storage devices 16 may provide additional blocks 17 which may be used if some blocks wear out to the point of becoming unusable and are decommissioned.  The presence of the additional blocks 17 can make it possible to deactivate the used blocks without causing a change in the available storage capacity at the host device 4.  In some examples, the amount of oversupply can be defined as p = (TD) / D, where p is the oversupply ratio, T is the total storage capacity of the storage device 2, and D is the storage capacity of the storage device 2 which is accessible to the host device 4.  [29] The storage device 6 comprises the controller 8, which can handle one or more operations of the storage device 6.  FIG. 3 is a conceptual and schematic block diagram illustrating an exemplary controller 20 which may be, for example, an example of the controller 6 of FIG.  In some examples, the controller 20 may include an address translation module 22, a write module 24, a maintenance module 26, a read module 28, a scheduling module 30, and a plurality of channel controllers 32A-32N (collectively, "channel controllers 28").  In other examples, the controller 20 may include additional modules or hardware units, or may include fewer modules or hardware units.  The controller 20 may include a microprocessor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or other digital logic circuit.  [30] The controller 20 can interface with the host device 4 via the interface 14 and manage the storage and retrieval of data in the memory devices 16.  For example, the write module 24 of the controller 20 can handle the writes in the memory devices 16.  For example, the write module 24 may receive a message from the host device 4 through the interface 14 instructing the storage device 6 to store data associated with a logical address and the data.  The write module 24 can manage the writing of the data in the memory devices 16.  [31] For example, the write module 24 can communicate with the address translation module 22, which manages the translation between the logical addresses used by the host device 4 to manage the data storage locations and the data address addresses. physical blocks used by the write module 24 to direct the writing of data in the memory devices.  The address translation module 22 of the controller 20 may use a flash translation layer or table that translates the logical addresses (or logical block addresses) of data stored by the memory devices 16 into physical data block addresses. stored by memory devices 16.  For example, the host device 4 may use the logical block addresses of the data stored by the memory devices 16 in instructions or messages to the storage device 6, while the write module 24 uses physical block addresses of the storage devices 6. data for controlling the writing of data in memory devices 16.  (Similarly, the read module 28 may use physical block addresses to control the reading of data in the memory devices 16. ) The physical block addresses correspond to real physical blocks (for example, blocks 17 of FIG. 2) of memory devices 16.  [32] In this way, the host device 4 may be allowed to use a static logical block address for a certain data set, while the physical block address at which the data is actually stored may change.  The address translation module 22 can maintain the flash translation table or table to map the logical block addresses to physical block addresses to allow the use of the static logical block address by the host device 4 while that the physical block address of the data may change, for example, due to the distribution of wear, space reclamation, or the like.  [33] As indicated above, the write module 24 of the controller 20 can perform one or more operations to manage the writing of data in the memory devices 16.  For example, the write module 24 can handle the writing of data to the memory devices 16 by selecting one or more blocks in the memory devices 16 to store the data and bring the memory devices of the memory devices 16 which include selected blocks to actually store the data.  As indicated above, the write module 24 may cause the address translation module 22 to update the flash translation table or table based on the selected blocks.  For example, the write module 24 may receive a message from the host device 4 that includes a data unit and a logical block address, select a block in a particular memory device of the memory devices 16 to store the data, causing the particular memory device of the memory devices 16 to actually store the data (e.g., through a channel controller channel controller 32 which corresponds to the particular memory device), and to bring the translation module address 22 to update the flash translation layer or table to indicate that the logical block address corresponds to the block selected in the particular memory device.  [34] In some cases, the data to be written may be in units that are larger than a single block (i.e., a single physical block) of a memory device. memory 16.  As such, the write module 24 can select multiple blocks, collectively referred to as a logical container, to each store a portion of the data unit.  For example, the write module 24 may define a logical container by selecting multiple blocks of a single memory device from the memory devices 16.  However, in some instances, it may not be desirable for the write module 24 to select all blocks of a logical container of a single memory device.  For example, it may not be possible to write in multiple blocks included in a single memory device in parallel.  [35] Therefore, rather than defining a logical container by selecting multiple blocks of a single memory device from the memory devices 16, the write module 24 can define a logical container by selecting one of a plurality of blocks. of memory devices 16.  For example, when an NVMA 10 comprises 128 memory devices 16 arranged in sixteen channels each having eight lines / circuit authorization targets (CE), one line / target of CE for each of the memory devices 16 in a channel (i.e., when the channel 18A comprises the memory devices 16Aa-Ah,. . . , and the channel 18P comprises the memory devices 16Pa-Ph), the writing module 24 can define a logical container which comprises 128 blocks by selecting a block of each of the memory devices 16Aa-16Ph.  The write module 24 can then cause the plurality of memory devices 16 to store the 30 portions of the data unit in parallel in the selected blocks.  In this way, the write module 24 can increase the speed at which the data can be stored in the memory devices 16 by writing portions of the data in different memory devices 16, for example, connected to different channels 18.  However, in some instances, it may not be desirable for a logical container to include a block of each of the memory devices 16.  [36] In accordance with one or more techniques of the present invention, rather than defining a logical container that includes a block of each of the memory devices 16, the write module 24 may define a set of blocks that includes a block of each memory device of a subset of memory devices 16 which comprises at least one memory device of each of the channels 18.  In some examples, the subset of memory devices 16 may be called a dice set.  For example, the write module 24 may partition the memory devices 16 based on the respective EC lines associated with the respective devices of the memory devices 16 to define a plurality of subsets of memory devices 16, each set comprising at least one memory device (for example, one die) of each of the channels 18.  For each respective subset of the plurality of subsets of memory devices 16, the write module 24 may define a respective plurality of sets of blocks, each set of blocks including a block of each die of the respective subset of the plurality of subsets of memory devices 16.  In this way, for example, by using blocksets that comprise fewer blocks, the write module 24 can decrease the amount of time required to clear blocks in a set of blocks, which can also decrease the latency for that the sets of blocks return to the pool of free resources.  Also in this way, the amount of time required for a space recovery operation to recover a set of blocks can be reduced.  [37] In some examples, in addition to causing the portions of the data unit to be stored by the memory devices 16, the write module 24 may cause the memory devices 16 to store information that may be used to recover the unit of data if one or more of the blocks are defective or become corrupted.  For example, the write module 24 may cause the memory devices 16 to store parity information in a block within each set of blocks.  The parity information can be used to retrieve the data stored by other blocks of the block set.  In some examples, the parity information may be an exclusive OR of the data stored by the other blocks.  [38] In order to write a bit with a logical value of 0 (loaded) on a bit with a previous logical value of 1 (not loaded), a strong current is used.  This current can be so strong that it can cause unintended changes in the charge of adjacent flash memory cells.  To protect against accidental modification, an entire block of flash memory cells can be erased to a logic value of 1 (not loaded) before writing data to the cells of the block.  For this reason, flash memory cells can be deleted at the block level and written at the page level.  [39] Thus, to write, even a quantity of data that consumes less than one page, the controller 20 can cause an entire block to be erased.  This can lead to write amplification, which refers to the ratio between the amount of data received from the host device 4 to be written into the memory devices 16 and the amount of data actually written in the memory devices 16.  Write amplification helps accelerate the wear of the flash memory cells compared to what would occur without write amplification.  The wear of the flash memory cells may occur when the flash memory cells are erased due to the relatively high voltages used to erase the flash memory cells.  Over a plurality of erasure cycles, relatively high voltages may cause changes in the flash memory cells.  Finally, the flash memory cells can wear out, so that the data can no longer be written to the cells.  [40] One technique that the controller 20 can implement to reduce write amplification and wear of the flash memory cells includes writing data received from the host device 4 into unused blocks (for example, blocks). 17 of Figure 2) or partially used blocks.  For example, if the host device 4 sends data to the storage device 6 that includes only a small change from the data already stored by the storage device 6.  The controller may then mark the old data as out of date or no longer valid.  Over time, this can reduce a number of erasure operations that blocks are exposed to, compared to erasing the block that contains old data and writing updated data to the same block .  [41] In response to receiving a write command from the host device 4, the write module 24 can determine the physical locations (blocks 17) of the memory devices 16 in which the data write is performed. .  For example, the write module 24 can request from the address translation module 22 or from the maintenance module 26 one or more physical block addresses that are empty (for example, do not store any data), that are partially empty ( for example, only a few pages of the block store data), or store at least some invalid (or outdated) data.  After receiving said one or more physical block addresses, the write module 24 may define and / or select one or more sets of blocks as discussed above, and communicate a message to the channel controllers 32A-32N (collectively, the "channel controllers 32"), which causes the channel controllers 32 to write the data into the blocks of the block set.  [42] The read module 28 can similarly control the reading of the data from the memory devices 16.  For example, the read module 28 may receive a message from the host device 4 requesting data with an associated logical block address.  The address translation module 22 may convert the logical block address to a physical block address using the flash translation layer or table.  The read module 28 can then control one or more of the channel controllers 32 to extract the data from the physical block addresses.  As for the write module 24, the read module 28 can select one or more sets of blocks and communicate a message to the channel controllers 32, which causes the channel controllers 32 to read the data from the blocks of the block. block game.  [43] Each channel controller of the channel controllers 32 may be connected to a respective one of the channels 18.  In some examples, the controller 20 may comprise the same number of channel controllers 32 as the number of channels 18 of the storage device 2.  The channel controllers 32 can perform the intimate addressing, programming, erasing and reading control of the memory devices 16 connected to the respective channels, for example, under the control of the write module 24, of the memory module. reading 28, and / or the maintenance module 26.  [44] The maintenance module 26 may be configured to perform operations related to maintaining performance and extending the useful life of the storage device 6 (e.g., the memory devices 16).  For example, the maintenance module 26 can implement at least one of the distribution of wear and space recovery.  [45] As described above, the erasure of the flash memory cells may use relatively high voltages, which may, in a plurality of erase operations, cause changes in the flash memory cells.  After a number of erase operations, the flash memory cells may degrade to the point that data can no longer be written into the flash memory cells, and a block (for example, block 17 of the figure 2) including these cells can be disabled (no longer used by the controller 20 to store data).  To increase the amount of data that can be written into the memory devices 16 before the blocks are worn out and taken out of service, the maintenance module 26 can implement a distribution of wear.  [46] In the distribution of wear, the maintenance module 26 can follow a certain number of erasures or writes in a block or a group of blocks, for each block or group of blocks.  The maintenance module 26 can cause incoming data of the host device 4 to be written in a block or a group of blocks that has undergone relatively fewer writes or erasures, in an attempt to maintain the number of writes or erasures for each block or group of blocks substantially equal.  This can cause each block of memory devices 16 to wear out at about the same rate, and can increase the useful life of the storage device 6.  [47] Although this may reduce write amplification and wear of flash memory cells by reducing a number of erasures and writes of data in different blocks, this can also lead to blocks that include valid data (fresh) and invalid data (out of date).  To combat this, the maintenance module 26 can implement a space recovery.  In a space recovery operation, the maintenance module 26 may analyze the contents of the blocks of the memory devices 16 to determine a block that contains a high percentage of invalid (out-of-date) data.  The maintenance module 26 can then rewrite the valid data of the block in another block, then erase the block.  This can reduce an amount of invalid (stale) data stored by the memory devices 16 and increase a number of free blocks, but can also increase the write amplification and wear of the memory devices 16.  In some examples, the maintenance module 26 may perform space recovery within each of the plurality of dice sets to generate empty blocks in the block sets.  In this way, the maintenance module 26 can increase the probability that blocks or sets of empty blocks can be successfully defined within each set of dice.  [48] The scheduler module 30 of the controller 20 can perform one or more operations to plan the activities to be performed by the memory devices 16.  For example, the scheduling module 30 may schedule requests received from other components of the controller 20 to control one or more of the memory devices 16 to perform one or more activities during the execution time.  In some examples, the scheduling module 30 can schedule the requests to be made in the order in which they were received (eg, first-in, first-out, or FIFO).  In some examples, the scheduling module 30 may schedule the requests based on one or more factors that may include, but are not limited to, the type of request (for example, a read request, a request for writing, an erase request, a space retrieval request, etc. ), an amount of time elapsed since the receipt of the request, a quantity of energy that would be consumed by the execution of the request, bandwidth considerations, and the like.  For example, the scheduling module 30 can schedule activities to be performed based on a quantity of memory devices of the memory devices 16 that can be active simultaneously (for example, read, write and / or erase data). data simultaneously).  For example, the scheduling module 30 can determine the amount of memory devices of the memory devices 16 that can be active simultaneously based on a power budget, a performance goal, or both.  The energy consumption budget may indicate a quantity of available energy that can be used by the memory devices 16.  For example, when the storage device 6 has an energy goal of 25 W, the power consumption budget can allocate a portion of the energy goal (for example, 16 W) for use by the memory devices 16 .  However, in some examples, the amount of energy that would be consumed if all of the memory devices 16 were simultaneously active may be greater than the allocated portion of the delivered energy.  As such, the scheduling module 30 can determine a quantity of memory devices 16 that can be active simultaneously without consuming more power than the allocated portion.  [49] For example, when the memory devices 16 are allocated X units of a power consumption budget and each memory device 16 of the memory devices uses a power unit when it is active, the memory module 16 Planning 30 can determine that X memory devices of the memory devices 16 can be active simultaneously.  In some examples, such as when a plurality of dice sets are defined from the memory devices 16, the scheduling module 30 can determine a quantity of dice sets of the plurality of dice sets that can be active simultaneously.  For example, when the 16 memory devices 16 are allocated X units of a power budget, each memory device 16 uses a power unit when it is active, and each set of dice comprises X / 2 memory device memory devices 16, the scheduling module 30 can determine that two sets of dice of the plurality of dice sets can be active simultaneously.  [50] In order to comply with the power consumption budget, the scheduling module 30 can refrain from planning the activities to be performed by the respective subsets of the memory devices 16 included respectively in the plurality of dice sets. which would result in there being more dice games of the plurality of dice games to be active simultaneously than the determined amount of dice games that can be active simultaneously.  For example, when the scheduling module 30 determines that a set of dice of the plurality of dice sets can be active simultaneously, the scheduling module 30 can schedule the activities so that first commands are transmitted which bring a first set of dice of the plurality of dice sets to be active during a first period of time such that a quantity of energy consumed by memory devices 16 during the first period of time satisfies the power consumption budget , and second commands are transmitted that cause a second set of dice of the plurality of dice sets to be active for a second, different period of time, such that a quantity of energy consumed by memory devices 16 when the second period of different time also satisfies the energy consumption budget.  The first dice game can be the same dice game as the second dice game or the first dice game can be a dice game different from the second dice game.  [51] The scheduling module 30 can also determine the amount of dice games that can be active simultaneously based on one or more of the performance objectives.  For example, the scheduling module 30 may schedule the activities so that the storage device 6 performs one or more of a write speed objective (for example, 1.5 GB / s), a target read speed (for example, 3.0 GB / s), one or more I / O operations per second (TOPS) objectives (eg, sequential read / write, random read / write, and total), and the like.  [52] In some examples, the activities scheduled by the scheduling module 30 may take a variety of amounts of time and / or energy to complete.  For example, a writing activity may take longer (for example, twice as much time, 5 times more time, 10 times more time, etc.). ) to perform a reading activity.  As another example, the amount of power consumed by a memory device of the memory devices 16 when performing a write activity may be greater than the amount of power consumed by the memory device of the memory devices 16 when performing a read activity (for example, 2 times longer, 5 times longer, 10 times longer, etc. ).  In some examples, the scheduling module 30 may use these differences when scheduling activities and / or when determining the amount of dice games that can be active simultaneously.  For example, if performing a read activity consumes less power than performing a write activity, the scheduling module 30 can determine that more dice sets can simultaneously perform read activities. that this is not the case for simultaneously performing write activities.  In one or more of these ways, the scheduling module 30 can schedule activities to achieve one or more performance objectives.  [53] In some examples, messages received from host device 4 may not be balanced between data read requests and data write requests.  For example, a ratio of data read requests to data write requests can be 1: 0 (100% data read requests), 3: 1 (75% read requests to data and 25% of data write requests), of 1: 1 (ie 50% of data read requests and 50% of data write requests), of 1: 3 (ie 25% of requests data read requests and 75% data write requests), 0: 1 (ie 0% of data read requests and 100% of data write requests), and any intermediate report.  In some examples, the scheduling module 30 may use this report when scheduling activities and / or when determining the amount of dice games that can be active simultaneously.  For example, if the amount of time required to perform a reading activity is less than the amount of time required to perform a write activity, the scheduling module 30 can schedule multiple reading activities to take place during the same activity. period of time as a single writing activity.  As such, the storage device 6 can achieve a read rate greater than a write rate.  In one or more of these ways, the scheduling module 30 can schedule activities to achieve one or more performance objectives.  [54] As indicated above, the maintenance module 26 can perform one or more maintenance activities, such as space recovery, on the memory devices 16 in order, for example, to increase the number of blocks / free blocks games.  As such, in some examples, the scheduling module 30 may prioritize requests for space recovery over requests based on messages received from the host device 4 (for example, requests to read and / or write messages). data) by allocating a quantity of dice sets that can be used simultaneously for space recovery and allocating a quantity of dice sets that can be simultaneously available to the host device 4 for a given period of time.  [55] Based on the determined quantities, the scheduling module 30 can schedule activities such that, for a given period of time, a first set of the dice sets perform activities based on the messages received from the host device 4 and a second game of the dice games performs space recovery activities.  In some examples, the first game of the dice games may include a quantity of dice games that is less than or equal to the amount of dice games that may be available simultaneously for the host.  In some examples, the second game of dice games may include a quantity of dice games that is less than or equal to a difference between the determined amount of dice games that can be active simultaneously and a quantity of dice games that are scheduled to perform activities based on messages received from the host device 4 during the particular time period (i.e., the amount of dice sets at which the controller issues commands based on messages received from the host during the particular period of time).  In this way, the scheduling module 8 can balance the need to perform space recovery with the amount of bandwidth available to the host device 4 while satisfying the power consumption budget.  [56] In addition, the scheduling module 30 can schedule different dice sets to perform different activities simultaneously (for example, reading, writing and erasing).  For example, as opposed to scheduling for all the dice sets to simultaneously perform write activity, the scheduling module 30 can simultaneously program a first set of dice to perform a read activity, a second set of dice to execute a write activity, a third set of dice to execute an erase activity, and a fourth set of dice to be inactive In this way, for example, by partitioning the memory devices 16 into a plurality of dice games the techniques of the present invention can enable the scheduling module to effectively plan different types of operations / activities.  [57] Fig. 4 is a conceptual and schematic diagram illustrating further details of an exemplary nonvolatile memory array 10 of Fig. 1 in accordance with one or more techniques of the present invention.  As discussed above, memory devices 16 may be grouped into channels 18 and the memory devices of the memory devices 16 on each channel may share one or more connections with the controller 8.  For example, the memory devices 16 grouped into a respective one of the channels 18 may be attached to a respective common I / O bus of the I / O buses 34A-34N (collectively, the "I / O buses"). S 34 ") and a respective common control bus of the control buses 36A-36N (collectively, the" control buses 36 ").  As shown in FIG. 4, the memory devices 16Aa-16An of the channel 18A can each be attached to the I / O bus 34A and the control bus 36A.  [58] In some examples, each respective I / O bus I / O bus 34 may comprise a plurality of bidirectional I / O lines (e.g., 8 lines, 16 lines, etc.). ) that can be used to exchange address information, data, and instruction information between the controller 8 and the memory devices 16 attached to the respective I / O bus.  In some examples, each respective control bus of the control buses 36 may comprise a plurality of lines which may be used to exchange control signals, and status information between the controller 8 and the memory devices 16 attached to the control bus. For example, an exemplary control bus of the control bus 36 may include an address lock authorization (ALE) line, a control lock permission (CLE) line, a control line. read permission (RE), a write enable (WE) line, and a write protect line (WP) that can be used by the controller 8 to send commands to a memory device memory devices 16; and a busy / busy line (R / B) that can be used by a memory device memory device 16 to send status information to the controller 8.  [59] As discussed above, each of the channels 18 may comprise a set of circuit enable lines (CE) that can be used to multiplex the memory devices on each channel.  For example, as shown in FIG. 4, the CE lines 38Aa-38Na may be used to multiplex the 16Aa-16An memory devices of the channel 18A.  For example, to send a message to the memory device 16Aa, the controller 8 can send a signal via CE0 38Aa that causes the memory device 16Aa to "listen" to the signals on the I / O bus 34A and / or the signals on the control bus 36A.  The controller 8 can then transmit a command to the memory device 16Aa by transmitting signals on the I / O bus 34A and / or the control bus 36A.  In this way, the controller 8 can multiplex the memory devices of the memory devices 16 in a particular channel of the channels 18.  [60] In accordance with one or more techniques of the present invention, the controller 8 may define a set of blocks that includes a block of each memory device of a subset (or set of dice) of memory devices 16 that comprises at least one memory device of each of the channels 18.  As discussed above and illustrated in FIG. 4, the controller 8 can partition the memory devices 16 to define 40A-40N dice games (collectively, the "dice games 40") which each comprise at least one memory device. memory (for example, a die) of each of the channels 18.  In some examples, the controller 8 can partition the memory devices 16 into dice sets 40 on the basis of the CE lines 15 associated with the memory devices 16.  For example, the controller 8 can partition all of the physically located dice on a particular CE line (i.e. CE0 on each of the channels 18) into one or more of the particular (or selected) dice sets. .  For example, controller 8 can partition memory devices of memory devices 16 physically located on the CE0 of each channel (i.e., memory devices 16Aa, 16Ba,. . . , and 16Na) in the dice game 40A.  In some examples, the controller 8 may partition memory devices 16 into dice sets 40 based on other arrangements.  For example, controller 8 can partition memory devices of memory devices -16 physically located on different CEs of each channel (i.e., memory devices 16Aa, 16Bc,. . . , and 16Nb) in a game of dice.  Further details on an example of a dice game 40A of the dice games 40 are discussed below with respect to the conceptual diagram shown in FIG. 5.  [61] As illustrated in FIG. 5, each memory device 16Aa-16Na of the die set 40A comprises 16 blocks.  Although 16 blocks are illustrated for each of the memory devices 16Aa-16Na in the example of Figure 5, in other examples, each of the memory devices 16Aa-16Na may have more blocks.  From the plurality of memory devices 16Aa-16Na in the die set 40A, the controller 8 can define a plurality of sets of blocks 42A-42N (collectively, the "block sets 42").  Each set of blocks 42 may comprise a block (for example, a single block) of each die of the die set 40A.  [62] In some examples, the controller 8 may select a block from a particular location in the memory devices 16Aa, 16Ba,. . . , and 16Na to define a block set of block sets 42.  For example, as illustrated in FIG. 5, each block included in the set of blocks 42A originates from a respective location of each of the memory devices 16Aa, 16Ba,. . . , and 16Na.  In some examples, the controller 8 may select a block from different locations within the memory devices 16Aa, 16Ba,. . . , and 16Na to define a block set of block sets 42.  For example, as illustrated in FIG. 5, the set of blocks 42B may comprise the block 4 of the memory device 16Aa, the block 7 of the memory device 16Ba, the block 12 of the memory device 16Ca,. . . , and the block 7 of the memory device 16Na.  In some examples, for example when it is no longer desirable to use a block at a particular location of a memory device (for example, when the block is defective, has a number of write / write cycles). relatively high erase compared to other blocks of the same device memory, etc. ), the controller 8 may continue to select blocks at the particular location (or location) of other memory devices within the set of dice 40A to define sets of blocks.  [63] In some examples, the controller 8 can define the sets of blocks using a virtualized arrangement of memory devices 16 within an NVMA 10.  For example, as opposed to selecting a single memory device from the memory devices 16 from each of the physical channels 18, the controller 8 can select multiple memory devices from the memory devices 16 from each of the channels physical 18 to set a dice game of dice games 40.  In particular, the controller 8 can select memory devices of the memory devices 16 attached to different CE lines within each of the physical channels 18 to define a dice game of the dice games 40.  For example, FIG. 6 is a conceptual block diagram illustrating another example of a technique that can be implemented by a controller of a storage device to define sets of blocks from a set of dice, in accordance with a or several techniques of the present invention.  As illustrated in the example of FIG. 6, the controller 8 can define the set of dice 40A 'by selecting memory devices 16Aa, 16Ba, 16Ca,. . . , and 16Na and memory devices 16Ab, 16Bb, 16Cb,. . . , and 16Nb.  Furthermore, as discussed above with reference to FIG. 4, the memory devices 16Aa, 16Ba, 16Ca,. . . , and 16Na may be connected to a first set of circuit authorization lines, for example, CE0 38Aa-38An, and the memory devices 16Ab, 16Bb, 16Cb,. . . , and 16Nb can be connected to a second set of circuit authorization lines, for example, CE1-38Ba-38Bn.  [64] Within each dice set of dice games 40, the controller 8 can respectively map the memory devices of the memory devices 16 that are attached to each of the channels 18 with a plurality of virtual channels.  In the example of FIG. 6, the controller 8 can map the memory devices 16Aa, 16Ba, 16Ca,. . . , and 16Na with a first set of virtual channels and map memory devices 16Ab, 16Bb,. . . , and 16Nb with a second set of virtual channels, for example, based on the CE authorization lines to which the memory devices 16Aa, 16Ba, 16Ca,. . . , 16Na and and the memory devices 16Ab, 16Bb, 16Nb and are connected, respectively.  In this way, the controller 8 can define a larger number of virtual channels than the amount of physical channels to which the memory devices 16 are actually attached.  In some examples, this may allow the controller 8 or 20 to access increased parallelism of the memory devices 16.  [65] The controller 8 can then define sets of blocks 42 using the techniques described above.  For example, for a particular block set of block sets 40, the controller 8 may define a plurality of block sets 42 which may each include a block of each dice of the particular (or selected) dice set.  When the particular set of dice includes memory devices of the memory devices 16 attached to different CE lines within each of the physical channels 18, the controller 8 can define a set of blocks of the sets of blocks 42 by selecting a block to from each memory device 16 which is attached to a different EC line within each of the physical channels 18.  As illustrated in the example of FIG. 6, the controller 8 can define the set of blocks 42A 'by selecting a block of each of the memory devices 16Aa, 16Ba, 16Ca,. . . , and 16Na and each of the memory devices 16Ab, 16Bb, 16Cb,. . . , and 16Nb.  [66] Fig. 7 is a flow chart illustrating an exemplary technique for defining dice sets and sets of blocks in a storage device, in accordance with one or more techniques of the present invention.  The technique of FIG. 7 will be described with simultaneous reference to the storage device 6 and the controller 8 of FIG. 1 and to the controller 20 of FIG. 3 to facilitate the description, although computing devices having different configurations than the storage device 6, controller 8, or controller 20 can implement the techniques of FIG. 7.  [67] In accordance with one or more techniques of the present invention, the controller 8 can define, from a memory array (for example, NVMA 10) comprising a plurality of dice (e.g., the memory devices 16) arranged in a plurality of channels (e.g., channels 18), a plurality of dice sets each comprising at least one die of each of the plurality of channels (702).  For example, the write module 24 of the controller 20 may define a plurality of dice sets 40 according to the techniques described above with reference to the figure.  4.
[0003] In some examples, the write module 24 may define the plurality of dice sets by receiving program instructions that indicate the part of the memory devices 16 in the dice set 40. [68] The controller 8 can define, from a selected set of dice of the plurality of dice sets, a plurality of block sets each comprising a block of each dice of the selected dice game (704). By way of example, the writing module 24 can define a plurality of sets of blocks 42 from the set of dice 40A which each comprise a block of each dice of the set of dice 40A according to the techniques described above with reference In some examples, the controller 8 may redefine one or more of the plurality of sets of blocks based on status information of the blocks. For example, if a particular block of a particular memory device is defective, the controller 8 may select another block of the particular memory device to redefine a set of blocks that includes the particular block. [69] The controller 8 may receive a data unit to be stored (706). For example, the controller 8 may receive a message from a host device, such as the host device 4 of Figure 1, which includes a logical block address and the data unit to be stored. [70] The controller 8 can transmit commands that cause portions of the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks (708). For example, the write module 24 of the controller 8 can divide the data unit into a plurality of respective parts and transmit commands which bring memory devices 16 of memory devices which comprise respective blocks of the particular set of blocks storing the respective parts of the data unit. [71] In this way, for example, by simultaneously writing the respective portions of the data in respective blocks of the memory devices on different channels, the controller 8 can improve the throughput using parallelism. In this way also, the controller 8 can reduce the number of blocks included in the basic units of the logical management domain, for example, without compromising the potential bit rate. [72] The following examples may illustrate one or more of the techniques of the present invention. [73] Example 1. A method comprising: defining, from a memory array comprising a plurality of dice arranged in a plurality of channels, a plurality of dice sets based on the respective circuit authorization lines associated with the a plurality of dice, wherein each dice set of the plurality of dice sets comprises at least one die of each of the plurality of channels; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected dice set; receiving, by a controller of the memory array, a data unit to be stored; and transmitting, by the controller, commands that cause the data unit to be stored in the blocks of a selected set of blocks of the plurality of sets of blocks. [74] Example 2. The method of Example 1, further comprising: determining, by the controller, an amount of dice sets that can be active simultaneously; transmitting, by the controller, commands to a game of the plurality of dice games that includes a number of dice games that is less than or equal to the amount of dice games that can be active simultaneously; and abstain, by the controller, from transmitting commands that would cause more dice sets of the plurality of dice sets to be active simultaneously than the amount of dice games that can be active simultaneously. [75] Example 3. A method according to any combination of Examples 1 and 2, further comprising: transmitting, by the controller, first commands that cause a first subset of the plurality of dice sets to be active for a first time. a period of time such that a quantity of energy consumed by the memory array during the first period of time is less than or equal to a power consumption budget; and transmitting, by the controller, second commands which cause a second subset of the plurality of dice sets to be active for a second period of time such that a quantity of energy consumed by the memory array during the second period of time is also less than or equal to the energy consumption budget. [76] Example 4. A method according to any combination of Examples 1 to 3, wherein the second subset comprises at least one set of dice of the plurality of dice sets not included in the first subset so that the dice of the at least one set of dice are active during the second period of time, but not active during the first period of time. [77] Example 5. A method according to any combination of Examples 1 to 4, wherein the transmission of the first commands comprises: transmitting a first command of a set of commands to the dice of a first set of dice of the first subset , wherein the command set comprises a read command, a write command, and an erase command; and transmitting a second command different from the set of commands to the dice of a second set of dice of the first subset. [78] Example 6. A method according to any combination of Examples 1 to 5, wherein the determination of the amount of dice games to be active simultaneously comprises: determining the amount of dice games that can be active simultaneously during the time period; and on the basis of at least one of an energy consumption budget or a performance target. [79] Example 7. A method according to any combination of Examples 1 to 6, further comprising: performing space recovery within the plurality of dice sets to generate empty block sets. [80] Example 8. A method according to any combination of Examples 1 to 7, wherein the determination of the amount of dice sets that can be active simultaneously comprises determining a first quantity of dice sets which can be active simultaneously during a particular period of time, the method further comprising: determining, by the controller, a second amount of dice sets that may be available simultaneously for a host during the particular time period, wherein the second amount of dice games is less than or equal to the first amount of dice games; transmitting, by the controller and on the basis of messages received from the host, commands to a first game of the dice games of the plurality of dice games which includes a number of dice games which is less than or equal to at the second amount of dice games; determining a difference between the first amount of dice sets and the number of dice sets to which the controller has transmitted commands based on messages received from the host; and performing space recovery on a second set of dice sets of the plurality of dice games that includes a quantity of dice games that is less than or equal to the determined difference. [81] Example 9. A method according to any combination of Examples 1 to 8, further comprising: defining the particular set of dice by at least selecting a single one of the plurality of dice from each of the plurality of channels. [82] Example 10. A method according to any combination of Examples 1 to 9, wherein the plurality of channels comprises N physical channels, the method further comprising: defining the selected set of dice at least by selecting, from each of the plurality of channels, at least two of the plurality of dice that are associated with different circuit authorization lines; and map the selected dice with M virtual channels m where M is an integer at least twice as large as N. [83] Example 11. Storage device comprising: a memory array comprising a plurality of dice arranged in a plurality of channels ; and a controller configured to: define, from the memory array, a plurality of dice sets based on the respective circuit authorization lines associated with the plurality of dice, wherein each dice set of the plurality of games dice comprises at least one die of each of the plurality of channels; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected dice set; receive a data unit to store; and transmitting commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks. [84] Example 12. Storage device of Example 11, wherein the controller is further configured to execute the method according to any combination of Examples 1 to 10. [85] Example 13. Computer-readable storage medium storing instructions which, when executed, cause one or more processors of a storage device to: define, from a memory array having a plurality of dice arranged in a plurality of channels, a plurality of dice sets on the basis of the respective circuit authorization lines associated with the plurality of dice, wherein each dice set of the plurality of dice sets comprises at least one die of each of the plurality of channels; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each dice of the selected set of dice; receive a data unit to store; and transmitting commands that cause the data unit to be stored in the blocks of a selected set of blocks of the plurality of sets of blocks. [86] Example 14. Computer-readable storage medium of Example 13, further storing instructions which, when executed, cause one or more processors of the storage device to execute the method of any combination of the Examples 1-10. [87] Example 15. System comprising: means for defining, from a memory array comprising a plurality of dice arranged in a plurality of channels, a plurality of dice sets based on the d-lines. respective circuit authorization associated with the plurality of dice, wherein each dice set of the plurality of dice sets comprises at least one die of each of the plurality of channels; means for defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each dice of the selected dice set; means for receiving a data unit to be stored; and means for transmitting commands which cause the data unit to be stored in the blocks of a selected set of blocks of the plurality of sets of blocks. [88] Example 16. The system of Example 15, further comprising means for performing the method of any combination of Examples 1 to 10. [89] The techniques described in this specification can be carried out at less in part, in hardware, software, firmware, or any combination of these. For example, various aspects of the described techniques may be implemented within one or more processors, including one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), programmable gate arrays the user (FPGA), or any other equivalent integrated or discrete logic circuit, as well as any combinations of these components. The term "processor" or "processing circuit" may generally refer to any of the foregoing logic circuits, alone or in combination with other logic circuits, or any other equivalent circuit. A control unit including hardware may also implement one or more of the techniques of the present invention. [90] Such hardware, software and firmware may be implemented within the same apparatus or in separate devices to support the various techniques described in this specification. In addition, all described units, modules, or components 28 may be implemented together or separately as discrete but interoperable logic devices. The description of the different characteristics as modules or units is intended to highlight different functional aspects and does not necessarily mean that these modules or units must be realized by separate hardware, firmware or software components. Rather, features associated with one or more modules or units may be performed by separate hardware, firmware, or software components, or integrated into common or separate hardware, firmware, or software components. [91] The techniques described herein may also be incorporated or encode in a manufactured article comprising a computer-readable storage medium encoded with instructions. Embedded or encoded instructions in a manufactured article comprising an encoded computer readable storage medium may cause one or more programmable processors, or other processors, to implement one or more of the techniques described herein, such as when included instructions or encoded in the computer readable storage medium are executed by said one or more processors. Computer readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), reprogrammable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), flash memory, hard disk, CD-ROM (CD-ROM), floppy disk, cassette, magnetic media, optical media, or any other computer-readable medium. In some examples, a manufactured article may include one or more computer readable storage media. [92] In some examples, a computer readable storage medium may include non-transitory support. The term "non-transitory" may indicate that the storage medium is not incorporated in a carrier wave or a propagated signal. In some examples, a non-transitory storage medium may store data that may change over time (for example, in RAM or cache memory). [93] Several examples have been described. These and other examples fall within the scope of the following claims. 29
权利要求:
Claims (5)
[0001]
1. A storage device comprising: a memory array comprising a plurality of dice arranged in a plurality of channels; and a controller configured to: define, from the memory array, a plurality of dice sets based on respective circuit authorization lines associated with the plurality of dice, wherein each dice game of the plurality of games dice comprises at least one die of each of the plurality of channels; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected dice set; receive a data unit to store; and transmitting commands that cause the data unit to be stored in the blocks of a selected set of blocks of the plurality of sets of blocks.
[0002]
The storage device of claim 1, wherein the controller is further configured to: determine an amount of dice sets that can be active simultaneously; transmitting commands to a game of the plurality of dice games that includes a number of dice games that is less than or equal to the amount of dice games that can be active simultaneously; and refraining from transmitting commands that would cause more dice sets of the plurality of dice sets to be active simultaneously than the amount of dice games that can be active simultaneously.
[0003]
The storage device of claim 2, wherein the controller is configured to determine the amount of dice sets to be active simultaneously by at least: determining the amount of dice sets that can be active simultaneously during the execution time and based on at least one of an energy consumption budget or a performance goal.
[0004]
The storage device of claim 2, wherein the controller is configured to determine the amount of dice sets that can be active simultaneously by at least determining a first amount of dice games that can be active simultaneously for a period of time particular, and wherein the controller is further configured to: determine a second amount of dice sets that may be available simultaneously for a host during the particular time period, wherein the second amount of dice games is less than or equal to the first amount of dice games; transmit, on the basis of messages received from the host, commands to a first game of the dice games of the plurality of dice games which includes a number of dice games which is less than or equal to the second amount of games of dice; determining a difference between the first amount of dice sets and the number of dice sets to which the controller has transmitted commands based on messages received from the host; and performing space recovery on a second set of dice games of the plurality of dice games that includes a dice game amount that is less than or equal to the determined difference.
[0005]
The storage device of claim 1, wherein the controller is further configured to: transmit first commands that cause a first subset of the plurality of dice sets to be active for a first time period of such so that a quantity of energy consumed by the memory array during the first period of time is less than or equal to a power consumption budget; and transmitting second commands that cause a second subset of the plurality of dice sets to be active for a second period of time such that a quantity of energy consumed by the memory array during the second period of time is also less than or equal to the energy consumption budget. The storage device according to claim 5, wherein the second subset comprises at least one set of dice of the plurality of dice sets not included in the first subset so that the dice of said at least one set of dice are active during the second period of time, but not active during the first period of time. The storage device according to claim 6, wherein the controller is configured to transmit the first commands at least by: transmitting a first command of a set of commands to the dice of a first set of dice of the first subset, wherein the command set comprises a read command, a write command, and an erase command; and transmitting a second command different from the set of commands to the dice of a second set of dice of the first subset. The storage device of claim 1, wherein the controller is further configured to: perform space recovery within the plurality of dice sets to generate empty block sets. The storage device of claim 1, wherein the controller is further configured to: define the particular set of dice by selecting at least one of the plurality of dice from each of the plurality of channels. The storage device of claim 1, wherein the plurality of channels comprises N physical channels, and wherein the controller is further configured to: define the selected dice set at least by selecting from each of the plurality of channels, at least two of the plurality of dice that are associated with different circuit authorization lines; and map the selected dice with M virtual channels where M is an integer at least twice as large as N. 32. A method comprising: defining, from a memory array comprising a plurality of dice arranged in a plurality of channels a plurality of dice sets based on respective circuit clearance lines associated with the plurality of dice, wherein each dice set of the plurality of dice sets comprises at least one die of each of the plurality of dice canals ; defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each die of the selected dice set; receiving, by a controller of the memory array, a data unit to be stored; and transmitting, by the controller, commands that cause the data unit to be stored in blocks of a selected set of blocks of the plurality of sets of blocks. The method of claim 11, further comprising: determining, by the controller, an amount of dice sets that can be active simultaneously; transmitting, by the controller, commands to a game of the plurality of dice games that includes a number of dice games that is less than or equal to the amount of dice games that can be active simultaneously; and abstain, by the controller, from transmitting commands that would cause more dice sets of the plurality of dice sets to be active simultaneously than the amount of dice sets that can be active simultaneously. The method of claim 11, further comprising: transmitting, by the controller, first commands that cause a first subset of the plurality of dice sets to be active for a first period of time such that a quantity of energy consumed by the memory array during the first period of time is less than or equal to a power consumption budget; and transmitting, by the controller, second commands which cause a second subset of the plurality of dice sets to be active for a second period of time such that a quantity of energy consumed by the memory array during the second period of time is also less than or equal to the energy consumption budget. The method of claim 13, wherein the transmission of the first commands comprises: transmitting a first command of a set of commands to the dice of a first set of dice of the first subset, wherein the set of commands comprises a read command, a write command, and an erase command; and transmitting a second command different from the set of commands to the dice of a second set of dice of the first subset. The method of claim 12, wherein determining the amount of sets of dice that can be active simultaneously comprises determining a first amount of dice sets that can be active simultaneously for a particular period of time, the the method further comprising: determining, by the controller, a second amount of dice sets that may be simultaneously available to a host during the particular time period, wherein the second amount of dice games is less than or equal to the first quantity of dice games; transmit, by the controller, on the basis of messages received from the host, commands to a first game of the dice games of the plurality of dice games which includes a number of dice games which is less than or equal to the second quantity of dice games; determining a difference between the first amount of dice sets and the number of dice sets to which the controller has transmitted commands based on messages received from the host; and performing space recovery on a second set of dice games of the plurality of dice games that includes a quantity of dice games that is less than or equal to the determined difference. 16. A computer-readable storage medium storing instructions which, when executed, cause one or more processors of a storage device to: define, from a memory array comprising a plurality of dice arranged in one; plurality of channels, a plurality of dice sets based on respective circuit authorization lines associated with the plurality of dice, wherein each dice set of the plurality of dice sets comprises at least one die of each of the plurality of channels; Define, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each dice of the selected dice set; receive a data unit to store; and transmitting commands that cause the data unit to be stored in the blocks of a selected set of blocks of the plurality of sets of blocks. The computer readable storage medium of claim 16, further storing instructions which, when executed, cause one or more processors of the storage device to: determine a quantity of dice sets that can be active simultaneously; transmitting commands to a game of the plurality of dice games that includes a number of dice games that is less than or equal to the amount of dice games that can be active simultaneously; and abstaining from transmitting commands that would cause more dice sets of the plurality of dice sets to be active simultaneously than the amount of dice games that can be active simultaneously. The computer readable storage medium according to claim 17, wherein the instructions which, when executed, cause one or more processors of the storage device to determine the amount of dice sets that can be active simultaneously include instructions. which, when executed, cause one or more processors of the storage device to determine a first amount of dice sets that can be active simultaneously for a particular period of time, and further comprising instructions which, when present performed, cause one or more processors of the storage device to: determine a second amount of dice sets that may be simultaneously available to a host during the particular time period, wherein the second amount of dice sets is less than or equal to the first amount of dice games; Transmitting, on the basis of messages received from the host, commands to a first set of dice games of the plurality of dice games that includes a number of dice games that is less than or equal to the second amount of sets of dice games; dice; determining a difference between the first amount of dice sets and the number of dice sets to which the controller has transmitted commands based on messages received from the host; and performing space recovery on a second set of dice games of the plurality of dice games that includes a quantity of dice games that is less than or equal to the determined difference. A system, comprising: means for defining, from a memory array comprising a plurality of dice arranged in a plurality of channels, a plurality of dice sets based on respective circuit authorization lines associated with the plurality of dice, wherein each dice set 15 of the plurality of dice sets comprises at least one die of each of the plurality of channels; means for defining, from a selected set of dice of the plurality of dice sets, a plurality of sets of blocks, wherein each set of blocks comprises a block of each dice of the selected dice set; means for receiving a data unit to be stored; and means for transmitting commands which cause the data unit to be stored in the blocks of a selected set of blocks of the plurality of sets of blocks. 20. The system of claim 20, further comprising: means for determining an amount of dice sets that can be active simultaneously; means for transmitting commands to a game of the plurality of dice games that includes a number of dice games that is less than or equal to the amount of dice games that can be active simultaneously; and means for refraining from transmitting commands that would cause more than 30 sets of dice of the plurality of dice sets to be active simultaneously than the amount of dice games that can be active simultaneously. 36
类似技术:
公开号 | 公开日 | 专利标题
FR3026545A1|2016-04-01|
FR3028656A1|2016-05-20|
US9940261B2|2018-04-10|Zoning of logical to physical data address translation tables with parallelized log list replay
US20160210060A1|2016-07-21|Dynamic resource allocation within storage devices
AU2016213809B2|2017-11-23|Storing parity data separate from protected data
US9582192B2|2017-02-28|Geometry aware block reclamation
US9645769B2|2017-05-09|Performance acceleration during shutdown of a data storage device
US10275310B2|2019-04-30|Updating exclusive-or parity data
US9842059B2|2017-12-12|Wear leveling in storage devices
US9927999B1|2018-03-27|Trim management in solid state drives
KR102137761B1|2020-07-27|Heterogeneous unified memory section and method for manaing extended unified memory space thereof
US10235069B2|2019-03-19|Load balancing by dynamically transferring memory range assignments
KR20170099852A|2017-09-01|Method and apparatus for improving read performance of a solid state drive
US20180074701A1|2018-03-15|Incremental background media scan
FR3026513A1|2016-04-01|
CN109923514A|2019-06-21|Storage operation to data
US8856439B2|2014-10-07|Method and device for utilizing application-level prior knowledge for selectively storing data in higher performance media
US20160210241A1|2016-07-21|Reducing a size of a logical to physical data address translation table
CN1975656A|2007-06-06|Standby device managing method and system
US20160170685A1|2016-06-16|Method and System for Improving Cache Performance of a Redundant Disk Array Controller
US20180024751A1|2018-01-25|Metadata management on a storage device
US20160291871A1|2016-10-06|Data storage device and operating method thereof
同族专利:
公开号 | 公开日
CN105653202B|2019-02-15|
GB201516826D0|2015-11-04|
US10552055B2|2020-02-04|
US20160092116A1|2016-03-31|
GB2530667A|2016-03-30|
CN105653202A|2016-06-08|
US11068170B2|2021-07-20|
US20190227720A1|2019-07-25|
GB2530667B|2018-02-21|
US20200159418A1|2020-05-21|
DE102015012566A1|2016-03-31|
US10289314B2|2019-05-14|
US20170336990A1|2017-11-23|
US9582201B2|2017-02-28|
CN109508152A|2019-03-22|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题

US8266367B2|2003-12-02|2012-09-11|Super Talent Electronics, Inc.|Multi-level striping and truncation channel-equalization for flash-memory system|
US6957313B2|2000-12-01|2005-10-18|Hsia James R|Memory matrix and method of operating the same|
US7496879B2|2004-12-01|2009-02-24|Tabula, Inc.|Concurrent optimization of physical design and operational cycle assignment|
KR20070092617A|2006-03-09|2007-09-13|마츠시타 덴끼 산교 가부시키가이샤|Semiconductor memory device and semiconductor device|
US7778020B2|2006-12-06|2010-08-17|Fusion Multisystems, Inc.|Apparatus, system, and method for a modular blade|
US7460398B1|2007-06-19|2008-12-02|Micron Technology, Inc.|Programming a memory with varying bits per cell|
US8738841B2|2007-12-27|2014-05-27|Sandisk Enterprise IP LLC.|Flash memory controller and system including data pipelines incorporating multiple buffers|
JP2009211233A|2008-03-01|2009-09-17|Toshiba Corp|Memory system|
US8244937B2|2008-09-30|2012-08-14|Micron Technology, Inc.|Solid state storage device controller with parallel operation mode|
US8412880B2|2009-01-08|2013-04-02|Micron Technology, Inc.|Memory system controller to manage wear leveling across a plurality of storage nodes|
WO2010093056A1|2009-02-12|2010-08-19|Kabushiki Kaisha Toshiba|Memory system and method of controlling memory system|
KR101565974B1|2009-03-02|2015-11-04|삼성전자주식회사|Nonvolatile memory device programming method thereof and memory system including the same|
US8661184B2|2010-01-27|2014-02-25|Fusion-Io, Inc.|Managing non-volatile media|
US20100250826A1|2009-03-24|2010-09-30|Micron Technology, Inc.|Memory systems with a plurality of structures and methods for operating the same|
US20100262773A1|2009-04-08|2010-10-14|Google Inc.|Data striping in a flash memory data storage device|
US8650362B2|2009-04-17|2014-02-11|Violin Memory Inc.|System for increasing utilization of storage media|
US8495332B2|2009-07-24|2013-07-23|Apple Inc.|Controller for optimizing throughput of read operations|
US8495471B2|2009-11-30|2013-07-23|International Business Machines Corporation|Solid-state storage system with parallel access of multiple flash/PCM devices|
US8677203B1|2010-01-11|2014-03-18|Apple Inc.|Redundant data storage schemes for multi-die memory systems|
KR101131560B1|2010-07-15|2012-04-04|주식회사 하이닉스반도체|Non-Volitile Memory Device For Performing Wear-Leveling and Method Thereof|
JP5066241B2|2010-09-24|2012-11-07|株式会社東芝|Memory system|
US20120159040A1|2010-12-15|2012-06-21|Dhaval Parikh|Auxiliary Interface for Non-Volatile Memory System|
US8595415B2|2011-02-02|2013-11-26|Micron Technology, Inc.|At least semi-autonomous modules in a memory system and methods|
US8724517B1|2011-06-02|2014-05-13|Cisco Technology, Inc.|System and method for managing network traffic disruption|
US9239781B2|2012-02-07|2016-01-19|SMART Storage Systems, Inc.|Storage control system with erase block mechanism and method of operation thereof|
US9134919B2|2012-03-29|2015-09-15|Samsung Electronics Co., Ltd.|Memory device including priority information and method of operating the same|
US8760922B2|2012-04-10|2014-06-24|Sandisk Technologies Inc.|System and method for micro-tiering in non-volatile memory|
CN103377143B|2012-04-27|2016-12-21|群联电子股份有限公司|Storage management method, Memory Controller and memory storage apparatus|
JP6003316B2|2012-07-12|2016-10-05|ソニー株式会社|Solid-state imaging device, electronic equipment|
US8724389B2|2012-07-26|2014-05-13|Ocz Storage Solutions, Inc.|Non-volatile solid state memory-based mass storage device and methods thereof|
TWI495998B|2012-08-01|2015-08-11|Phison Electronics Corp|Data management method, memory controller and memory storage device|
KR102083490B1|2012-08-08|2020-03-03|삼성전자 주식회사|Nonvolatile memory device, memory system including the same and method of controlling command execution of the nonvolatile memory device|
US9292428B2|2012-09-05|2016-03-22|Kabushiki Kaisha Toshiba|Memory system|
US9620202B2|2013-11-01|2017-04-11|Seagate Technology Llc|Reduction or elimination of a latency penalty associated with adjusting read thresholds for non-volatile memory|
US9582201B2|2014-09-26|2017-02-28|Western Digital Technologies, Inc.|Multi-tier scheme for logical storage management|US9542118B1|2014-09-09|2017-01-10|Radian Memory Systems, Inc.|Expositive flash memory control|
US9582201B2|2014-09-26|2017-02-28|Western Digital Technologies, Inc.|Multi-tier scheme for logical storage management|
EP3213218A4|2014-10-29|2018-05-30|Hewlett-Packard Development Company, L.P.|Communicating over portions of a communication medium|
US9959078B2|2015-01-30|2018-05-01|Sandisk Technologies Llc|Multi-die rolling status mode for non-volatile storage|
US10114690B2|2015-02-13|2018-10-30|Sandisk Technologies Llc|Multi-die status mode for non-volatile storage|
US9875053B2|2015-06-05|2018-01-23|Western Digital Technologies, Inc.|Scheduling scheme for a multi-die storage device|
KR20160150552A|2015-06-22|2016-12-30|삼성전자주식회사|Data storage device and data processing system having the same|
US10599349B2|2015-09-11|2020-03-24|Samsung Electronics Co., Ltd.|Method and apparatus of dynamic parallelism for controlling power consumption of SSDs|
US10095412B2|2015-11-12|2018-10-09|Sandisk Technologies Llc|Memory system and method for improving write performance in a multi-die environment|
US10234927B2|2015-11-12|2019-03-19|International Business Machines Corporation|Storage system power usage|
JP6538597B2|2016-03-14|2019-07-03|東芝メモリ株式会社|Storage device|
US10083722B2|2016-06-08|2018-09-25|Samsung Electronics Co., Ltd.|Memory device for performing internal process and operating method thereof|
US10031689B2|2016-09-15|2018-07-24|Western Digital Technologies, Inc.|Stream management for storage devices|
US20180129440A1|2016-11-09|2018-05-10|Western Digital Technologies, Inc.|Self-virtualizing flash memory for solid state drive|
EP3367251A4|2016-12-29|2019-04-10|Huawei Technologies Co., Ltd.|Storage system and solid state hard disk|
US10489877B2|2017-04-24|2019-11-26|Intel Corporation|Compute optimization mechanism|
US10474582B2|2017-04-28|2019-11-12|Seagate Technology Llc|NAND flash storage device and methods using non-NAND storage cache|
CN107302505B|2017-06-22|2019-10-29|迈普通信技术股份有限公司|Manage the method and device of caching|
US20190042150A1|2017-08-07|2019-02-07|Toshiba Memory Corporation|Ssd architecture supporting low latency operation|
KR20200096614A|2017-12-13|2020-08-12|마이크론 테크놀로지, 인크.|Variable width super block addressing|
US10423361B2|2017-12-21|2019-09-24|Microsoft Technology Licensing, Llc|Virtualized OCSSDs spanning physical OCSSD channels|
US10802733B2|2018-04-27|2020-10-13|Western Digital Technologies, Inc.|Methods and apparatus for configuring storage tiers within SSDs|
US11222258B2|2020-03-27|2022-01-11|Google Llc|Load balancing for memory channel controllers|
法律状态:
2016-09-21| PLFP| Fee payment|Year of fee payment: 2 |
2017-08-10| PLFP| Fee payment|Year of fee payment: 3 |
2018-08-13| PLFP| Fee payment|Year of fee payment: 4 |
2018-10-05| PLSC| Search report ready|Effective date: 20181005 |
2020-04-24| TP| Transmission of property|Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., US Effective date: 20200319 |
优先权:
申请号 | 申请日 | 专利标题
US14/498,566|US9582201B2|2014-09-26|2014-09-26|Multi-tier scheme for logical storage management|
[返回顶部]